#include "Systick.h"

#define SYSTICK_FREQUENCY 72000000 // 系统时钟频率，单位 Hz
#define SYSTICK_TICK_PER_MS 1000 // 1ms 对应的 SysTick 计数器值

/**
 * @brief 初始化滴答计时器
 * 
 * @param ms 定义延时的时间,单位ms
 */
void SysTick_Init(u16 ms){
    //时钟源设置为HCLK, 即72M  0是八分频
    SysTick->CTRL |= SysTick_CTRL_CLKSOURCE;//100
    //设置SysTick的重装值，每1ms产生一次中断
    SysTick->LOAD = SYSTICK_FREQUENCY / SYSTICK_TICK_PER_MS * ms;
    //滴答计时器是向下计数的
    //使能SysTick中断
    SysTick->CTRL |= SysTick_CTRL_TICKINT;
}

//弱函数
__weak void SysTick_callback(void){

}


/**
 * @brief 滴答计时器中断函数
 * 
 */
void SysTick_Handler(void){
    SysTick_callback();
}